// 创建共享状态模块
import { ref, unref } from 'vue'
import dayjs from 'dayjs'
import { mConfigs, utils } from '@ny-ui'
import customerInfoClass from './indexClass.js' // 导入单例实例
import { processOptions, findOptionByField } from '@/utils/common/index.js'
import TextTip from '../../../components/TextTip.vue' // 引入 TextTip 组件
import i18n from '@/lang/m/index' // i18n

const t = i18n.global.t

// 投保计划
export const planOption = ref(
  processOptions(
    [
      ...unref(mConfigs.planOptions),
      // 覆盖默认的方法，并取其默认的某些属性，如果想覆盖某部分属性，可以在下面直接写
      {
        // 该方法返回当前项，通过...扩展符拿到所有属性
        ...findOptionByField(unref(mConfigs.planOptions), 'startDate'),
        /** 回调函数
         * e: 原生回调参数
         * item: 当前对象
         *  **/
        onConfirm: (e: any, item: any) => {
          // 选择后赋值
          utils.giveValAboutDate(e, item)
          // 自动根据生效日计算出结束日
          const endDateItem = utils.findArrField(planOption, 'endDate')
          if (endDateItem) {
            endDateItem.value = dayjs(item.value).add(1, 'year').format('YYYY-MM-DD')
          }
          const areaItem = utils.findArrField(planOption, 'area')
          if (areaItem) {
            areaItem.value = '20' // 面积给20
          }
          // 自动根据生效日计算出结束日
          const payMethodItem = utils.findArrField(planOption, 'payMethod')
          if (payMethodItem) {
            ;(payMethodItem.columns as any).push({ text: '其他', value: '99' })
          }
        }
      },
      // 下面是扩展的
      {
        field: 'area',
        value: '',
        components: 'MInput',
        type: 'text',
        label: t('short.area'),
        inputAlign: 'right',
        required: true,
        placeholder: t('short.inputPlaceholder') + t('short.area')
      },
      // 自定义额外模板
      {
        field: 'extraname',
        value: '',
        txt: t('short.extraname'),
        extraHtml: t('short.extraHtml'),
        components: TextTip,
        onClick: (item: any, idx: number) => {
          console.log(item, idx, 1111111)
          customerInfoClass.sayHi()
        }
      }
    ],
    ['extraname', 'startDate', 'endDate', 'qijian', 'payMethod', 'area']
  )
)

// 投保人配置
export const policyholderOption = mConfigs.policyholderOptions

// 被保人配置
export const insureOption = mConfigs.insureOptions
